package 缓冲流;


import java.io.*;

/**
 * 字节缓冲流性能分析：拷贝大文件
 */

public class BufferedStreamDemo2 {
    static String inputName="F:\\qq文件\\研招网网络爬虫 (1).pptx";
    static String oouputName="F:\\qq文件\\test\\";//这样就会自定义文件名，写死就会覆盖
    public static void main(String[] args) throws Exception {
        //使用低级字节流一个一个字节复制文件
        copy1();
        //使用低级字节流一个一个字节数组复制文件
        copy2();
        //使用高些缓冲字节流一个一个字节复制文件
        copy3();
        //使用高些缓冲字节流一个一个字节数组复制文件
        copy4();

        //使用低级字节流一个一个字节复制文件耗时:30936
        //使用低级字节流一个一个字节数组复制文件:36136
        //使用高些缓冲字节流一个一个字节复制文件耗时:882
        //使用高些缓冲字节流一个一个字节数组复制文件耗时:69
    }

    private static void copy4() throws Exception {
        //设置开始时间
        long startTime = System.currentTimeMillis();
        FileInputStream input=new FileInputStream(inputName);
        //将原始字节流包装成缓冲字节流
        BufferedInputStream input1=new BufferedInputStream(input);
        FileOutputStream output=new FileOutputStream(oouputName+"研招网网络爬虫 (5).pptx");
        //将原始字节流包装成缓冲字节流
        BufferedOutputStream output1=new BufferedOutputStream(output);
        byte []arr=new byte[1024];
        int len = 0;
        while ((len=input1.read())!=-1){
            output1.write(arr,0,len);
        }
        long endTime=System.currentTimeMillis();
        long time=endTime-startTime;
        System.out.println("使用高些缓冲字节流一个一个字节数组复制文件耗时:"+time);
        //获得截止时间

        output.close();
        input.close();
    }

    private static void copy3() throws Exception {
        //设置开始时间
        long startTime = System.currentTimeMillis();
        FileInputStream input=new FileInputStream(inputName);
        //将原始字节流包装成缓冲字节流
        BufferedInputStream input1=new BufferedInputStream(input);
        FileOutputStream output=new FileOutputStream(oouputName+"研招网网络爬虫 (4).pptx");
        //将原始字节流包装成缓冲字节流
        BufferedOutputStream output1=new BufferedOutputStream(output);
        int read = 0;
        while ((read=input1.read())!=-1){
            output1.write(read);
        }
        long endTime=System.currentTimeMillis();
        long time=endTime-startTime;
        System.out.println("使用高些缓冲字节流一个一个字节数组复制文件耗时:"+time);
        //获得截止时间

        output.close();
        input.close();
    }

    private static void copy2() throws Exception {
        //设置开始时间
        long startTime = System.currentTimeMillis();
        FileInputStream input=new FileInputStream(inputName);
        FileOutputStream output=new FileOutputStream(oouputName+"研招网网络爬虫 (3).pptx");
        byte []arr=new byte[1024];
        int read = 0;
        while ((read=input.read())!=-1){
            output.write(arr,0, read);
        }
        long endTime=System.currentTimeMillis();
        long time=endTime-startTime;
        System.out.println("使用低级字节流一个一个字节数组复制文件:"+time);
        //获得截止时间

        output.close();
        input.close();


    }

    private static void copy1() throws Exception {
        //设置开始时间
        long startTime = System.currentTimeMillis();
        FileInputStream input=new FileInputStream(inputName);
        FileOutputStream output=new FileOutputStream(oouputName+"研招网网络爬虫 (2).pptx");
        int read = 0;
        while ((read=input.read())!=-1){
            output.write(read);
        }
        long endTime=System.currentTimeMillis();
        long time=endTime-startTime;
        System.out.println("使用低级字节流一个一个字节复制文件耗时:"+time);
        //获得截止时间

        output.close();
        input.close();



    }
}
